This page last changed on Apr 05, 2005 by scytacki.

OTML Example

A simple object-oriented drawing component that creates a drawing that can be scaled to different sizes. The component should be able to be integrated with Scott's implementation of the left-pane dataset selection UI so one visible instantiation of the drawing tool in a compound document could allow the user to create several drawings. The dataset tool allows selection of one item and allows visibility of more than one. The selected item is the one that is being edited/created. The only additional UI element of the dataset selection would be one that allowed control of dataset/drawing layer order.

The UI drawing program should start with the basic graph tool palette:

  • Select_Arrow
  • Zoom_In
  • Zoom_Out
  • Default_Scale
  • Data_Point_Label

In addition a set of basic drawing tools in an extended palette:

  • Freehand_Paint: this tools creates freehand lines – perhaps by creating a finely gradated multi-segment line
  • Line: a standard click and drag rubber-banded line tool
  • Rectangle: click and drag a rectangle
  • Circle: click and drag a circle or ellipse
  • Text: click and start typing text in the drawing
  • Rubber_Stamp: places a selected predefined object or image

There are also three global attribute tools. These tools show a representation of the attribute which will be used when a new object is created. Clicking on one of these tools displays a selection method for changing the attribute. If an object is selected when one of these tools is clicked both the attribute is set for the selected object (or objects) and for subsequent operations.

  • Line_Thickness: thin, medium, and thick line thicknesses
  • Stroke_Color: color of the line or text
  • Fill_Color: represents the fill color of the rectangle or circle or the background fill behind the text – this selector can select either a color or an empty fill.

The Line_Thickness and Stroke_Color attributes should affect the Freehand_Paint, Line, Rectangle, Circle, and Text tools.

The Fill_Color attribute should affect the Rectangle, Circle, and Text tools.

When practical the basic drawing tools should display an iconic representation indicating the value of the attribute. For example when the Fill_Color is empty the Rectangle tool should show an outline. When red is selected as the Fill_Color the Rectangle tool should be filled with red.

One additional tool is needed – an object layer position control (this could also be used to affect position in tthe left-pane dataset/drawing selection UI). This function shifts the layer order of the selected object(s). There are four sub-functions move object forward, move object backwards, move object to the front, move object to the back. One way to UI possiblity would be to have a vertical representation of the the functions in a tape or cd player, like this (rough drawing):

Rubber_Stamp and image details/discussion:

Does the rubber stamp just place images or does it place objects also? when it places an image should the image object be re-sizable?

Brad needs the ability to have an image background and for the drawing to appear on top of this. One place he uses this is to have the students type a value into a blank white area that appears in the middle of a film can image. If a film can image of this type was in the Rubber_Stamp selection palette this would meet part of his needs however he would also like to place larger images as the background. He wants to specify this background image as an author. I think the best way to do this is to have this image live in another drawing and have the image background drawing be in a dataset layer beneath the current drawing.

Right now I am a bit stuck trying to figure out how to specify what list of rubberstamp objects should be available to the students.


layer_control.gif (image/gif)
Document generated by Confluence on Jan 27, 2014 16:43